package tech.eyao.hs60x.utils;

import org.apache.commons.lang3.StringUtils;

import io.jsonwebtoken.Claims;
import tech.eyao.hs60x.common.CommonConstants;
import tech.eyao.hs60x.token.Token;

/**
 * @author hejian
 * @date 2017年12月20日 下午2:41:39
 */
public class TokenUtils {
	
	/**
	 * 转化token
	 * @param token
	 * @return
	 */
	public static Token parseToken(String token) {
		Token tokenObject = new Token();
		Claims claims = JwtHelper.parseJWT(token);
		if(null != claims) {
			if(null != claims.get(CommonConstants.TOKEN_BODY)) {
				
				try {
					String body = claims.get(CommonConstants.TOKEN_BODY).toString();
					body = AesEcryptUtils.decode(AesEcryptUtils.RANDOM_KEY, body);
					if(StringUtils.isNotEmpty(body) && body.split("\\|").length == 2) {
						String[] account =  body.split("\\|");
						tokenObject.setUserId(Long.parseLong(account[0]));
						tokenObject.setDeviceId(account[1]);
					}
				} catch (Exception e) {
					return null;
				}
			}
		}
		return tokenObject;
	}
	
	/**
	 * 获取userId
	 * @param tokenValue
	 * @return
	 */
	public static Long getUserId(String tokenValue) {
		return parseToken(tokenValue).getUserId();
	}
	
	public static long getUserId() {
		return getUserId(RequestUtils.getRequest().getHeader(CommonConstants.REQUEST_HEADER_TOKE_NNAME));
	}
	
	public static String getDeviceId() {
		return parseToken(RequestUtils.getRequest().getHeader(CommonConstants.REQUEST_HEADER_TOKE_NNAME)).getDeviceId();
	}
}
